Make gtk_style_new() use a backing GtkStyleContext
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 20 Dec 2010 16:10:27 +0000 (17:10 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 20 Dec 2010 16:18:35 +0000 (17:18 +0100)
Fixes a bug in mutter where it would resort to a dummy style
to get iconview rubberband color.

Reported by Mathieu Bridon in
https://bugzilla.gnome.org/show_bug.cgi?id=637520

gtk/gtkstyle.c

index 419b098abbedc5d6a6dea8d866d3c5a54bc88bac..e02beb5655749893ebfb4196b0346d5e68e7537f 100644 (file)
@@ -809,10 +809,24 @@ gtk_style_copy (GtkStyle *style)
 GtkStyle*
 gtk_style_new (void)
 {
+  GtkStyleContext *context;
+  GtkWidgetPath *path;
   GtkStyle *style;
-  
-  style = g_object_new (GTK_TYPE_STYLE, NULL);
-  
+
+  context = gtk_style_context_new ();
+  gtk_style_context_set_screen (context, gdk_screen_get_default ());
+
+  path = gtk_widget_path_new ();
+  gtk_widget_path_append_type (path, GTK_TYPE_WIDGET);
+  gtk_style_context_set_path (context, path);
+
+  style = g_object_new (GTK_TYPE_STYLE,
+                        "context", context,
+                        NULL);
+
+  g_object_unref (context);
+  gtk_widget_path_free (path);
+
   return style;
 }